package com.ecoolex.discount.sales.pojo;

import com.ecoolex.framework.common.annotation.Description;
import org.springframework.lang.NonNull;

import java.math.BigDecimal;
import java.util.Date;

@Description({"编辑折扣抵用券"})
public class EditDiscountProductVouchersDTO {

    @Description({"价格币种"})
    private String currencyType;

    @Description({"专柜价格"})
    @NonNull
    private BigDecimal counterPrice;

    @Description({"零售价格"})
    @NonNull
    private BigDecimal retailPrice;

    @Description({"最大购买数量"})
    @NonNull
    private Integer maxBuyNumber;

    @Description({"有效期策略; 固定有效期; 动态有效期"})
    @NonNull
    private Integer expirydateStrategy;

    @Description({"有效期描述"})
    @NonNull
    private String expirydateDescribe;

    @Description({"固定开始有效期"})
    private Date fixedStartExpirydate;

    @Description({"固定结束有效期"})
    private Date fixedEndExpirydate;

    @Description({"动态有效期类型; 年; 月; 日; 小时;"})
    private Integer dynamicExpirydateType;

    @Description({"动态有效期时间"})
    private Integer dynamicExpirydateValue;

    public String getCurrencyType() {
        return currencyType;
    }

    public EditDiscountProductVouchersDTO setCurrencyType(String currencyType) {
        this.currencyType = currencyType;
        return this;
    }

    @NonNull
    public BigDecimal getCounterPrice() {
        return counterPrice;
    }

    public EditDiscountProductVouchersDTO setCounterPrice(@NonNull BigDecimal counterPrice) {
        this.counterPrice = counterPrice;
        return this;
    }

    @NonNull
    public BigDecimal getRetailPrice() {
        return retailPrice;
    }

    public EditDiscountProductVouchersDTO setRetailPrice(@NonNull BigDecimal retailPrice) {
        this.retailPrice = retailPrice;
        return this;
    }

    @NonNull
    public Integer getMaxBuyNumber() {
        return maxBuyNumber;
    }

    public EditDiscountProductVouchersDTO setMaxBuyNumber(@NonNull Integer maxBuyNumber) {
        this.maxBuyNumber = maxBuyNumber;
        return this;
    }

    @NonNull
    public Integer getExpirydateStrategy() {
        return expirydateStrategy;
    }

    public EditDiscountProductVouchersDTO setExpirydateStrategy(@NonNull Integer expirydateStrategy) {
        this.expirydateStrategy = expirydateStrategy;
        return this;
    }

    @NonNull
    public String getExpirydateDescribe() {
        return expirydateDescribe;
    }

    public EditDiscountProductVouchersDTO setExpirydateDescribe(@NonNull String expirydateDescribe) {
        this.expirydateDescribe = expirydateDescribe;
        return this;
    }

    public Date getFixedStartExpirydate() {
        return fixedStartExpirydate;
    }

    public EditDiscountProductVouchersDTO setFixedStartExpirydate(Date fixedStartExpirydate) {
        this.fixedStartExpirydate = fixedStartExpirydate;
        return this;
    }

    public Date getFixedEndExpirydate() {
        return fixedEndExpirydate;
    }

    public EditDiscountProductVouchersDTO setFixedEndExpirydate(Date fixedEndExpirydate) {
        this.fixedEndExpirydate = fixedEndExpirydate;
        return this;
    }

    public Integer getDynamicExpirydateType() {
        return dynamicExpirydateType;
    }

    public EditDiscountProductVouchersDTO setDynamicExpirydateType(Integer dynamicExpirydateType) {
        this.dynamicExpirydateType = dynamicExpirydateType;
        return this;
    }

    public Integer getDynamicExpirydateValue() {
        return dynamicExpirydateValue;
    }

    public EditDiscountProductVouchersDTO setDynamicExpirydateValue(Integer dynamicExpirydateValue) {
        this.dynamicExpirydateValue = dynamicExpirydateValue;
        return this;
    }

    @Override
    public String toString() {
        return "EditDiscountProductVouchersDTO{" +
                "currencyType='" + currencyType + '\'' +
                ", counterPrice=" + counterPrice +
                ", retailPrice=" + retailPrice +
                ", maxBuyNumber=" + maxBuyNumber +
                ", expirydateStrategy=" + expirydateStrategy +
                ", expirydateDescribe='" + expirydateDescribe + '\'' +
                ", fixedStartExpirydate=" + fixedStartExpirydate +
                ", fixedEndExpirydate=" + fixedEndExpirydate +
                ", dynamicExpirydateType=" + dynamicExpirydateType +
                ", dynamicExpirydateValue=" + dynamicExpirydateValue +
                '}';
    }
}
